﻿#define _CRT_SECURE_NO_WARNINGS
// ↑ 将本行在代码放在第一行可以避免 scanf的报错问题（仅在VS编译器里）
//【初阶篇】90.调试（下）
//【初阶篇】91.遗留作业
//【初阶篇】92.休息
//【初阶篇】93.作业讲解
//【初阶篇】94.休息
//【初阶篇】95.作业
#include<stdio.h>
#include<assert.h>

//模拟strlen函数
//unsigned int mystrlen(const char* str)
size_t mystrlen(const char* str)
{
	assert(str);
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}

char* rolstrlen(char* str,int sz)
{
	int l = 0;
	int r = sz-1;
	char m = '0';
	while (l < r)
	{
		m = *(str + l);
		*(str + l) = *(str + r);
		*(str + r) = m;
		l++;
		r--;
	}
	return str;
}

int sum_n(int a, int n)
{
	int an = 0;
	int sum = 0;
	int i = 0;
	for (i = 0; i < n; i++)
	{
		an = an*10+a;
		sum = sum + an;
	}
	return sum;
}


int main()
{
	{
		char input[20] = { 0 };
		printf("输入字符串:>");
		scanf("%s", input);
		int len = mystrlen(input);
		printf("字符串长度:>%d\n", len);
	}


	//作业 三角形判断
	{
		int a = 0;
		int b = 0;
		int c = 0;
		getchar();
		printf("输入三边值（输入字符可跳出循环）:>");
		scanf("%d %d %d", &a, &b, &c);
		//while (scanf("%d %d %d", &a, &b, &c) == 3)
		{
			if ((a + b > c) && (a + c > b) && (b + c > a))
			{
				if (a == b && b == c)
				{
					printf("等边三角形。\n");

				}
				else if (a == b || a == c || b == c)
				{
					printf("等腰三角形。\n");
				}
				else
				{
					printf("普通三角形。\n");
				}

			}
			else
			{
				printf("无法构成三角形。\n");
			}
		}
	}

	//不使用数组下标打印arr数组内容
	{
		int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
		int sz = sizeof(arr) / sizeof(arr[0]);
		int* p = arr;
		while (sz - 1 >= 0)
		{
			printf("%d", *p);
			p++;
			sz--;
		}
		printf("%\n");
	}

	//写一个函数逆序字符串
	{
		char input[20] = { 0 };
		printf("输入字符串:>");
		//scanf("%*[\n]%[^\n]", input);
		getchar();
		gets(input);
		int sz =mystrlen(input);
		printf("%s\n", input);
		//rolstrlen(input,sz);
		printf("%s\n", rolstrlen(input, sz));
	}

	//计算 a+aa+aaa+aaaa+aaaaa
	{
		int a = 0;
		int n = 0;
		printf("输入a的值和前几项之和:>");
		scanf("%d%d", &a, &n);
		printf("%d",sum_n(a, n));
	}

	

	return 0;
}
//90.调试（下）
	//常见编程错误：1.编译型（语法）错误；2.链接型错误（出现在链接期间）；3.运行时的错误（需要调试解决）
//维护代码仓库
	//gitee国内
	//gitHub国外
	//需要的工具1.git(版本管理工具）：一般使用命令行操作 2.TortoiseGit-git的图形化界面：配合git更直观的操作进行版本管理
	// 网络仓库，clone到本地